In the recent network, as represented by the Internet, data is transmitted as packets in the network layer and the lower layers. Then, the packets are transmitted to a packet destination address as datagrams whose delivery to the address is not guaranteed. On the other hand, a function to guarantee packet delivery to a destination address is provided in the layers above the network layer, and the function is provided mainly by using transport layer services as represented by the transport control protocol (TCP) (see Japanese Laid-open Patent Publication No. 2010-187292). Hereinafter, each end-to-end communication using the transport layer service is referred to as a “connection” in some cases.
In the TCP, a “window” is introduced to increase transfer performance. The “window” is the number of packets or a data amount which can be transmitted without waiting for an acknowledgement (ACK). In the TCP, a flow control (window flow control) using this window is performed. More specifically, in the TCP, a transmittable data amount without receiving an acknowledgement is fixed up to a buffer capacity of a receiver (in other words, a reception buffer size) and a transmission buffer capacity (in other words, a transmission buffer size) desired for holding transmission data including retransmission data. Then, an occurrence of a packet overflow at the receiver or a suspension of data transfer during a period until an acknowledgement is received are avoided as much as possible. This can improve the throughput unless the packet loss detection at the receiver occurs.
In addition, in the TCP, transmission rate control is performed utilizing the foregoing mechanism of the flow control. More specifically, the window size (typically shown in unit of the number of packets or a data amount) is dynamically adjusted to control the transmission rate. This is because the window size is a data mount transmittable within a round-trip time (RTT) and the transmission rate can be expressed by the following equation.Transmission rate=Window size/RTT
These protocols have to be assumed to be used in various networks. For this reason, communications in the networks utilizing these protocols are achieved by using various devices and applications. Accordingly, the packets transmitted from a transmitter to a receiver may pass through links having various delay characteristics and bandwidths. In addition, some links may be shared among multiple communication traffics. For this reason, when packets are transmitted considering only for convenience of the transmitter and the receiver, there may cause a situation in which the traffic amount exceeds the link bandwidth or the network capacity, with the result that buffer overflow at is occurred or packet discarding for protecting the network is performed. Furthermore, packets are retransmitted due to the discard. In the worst case, network would go down. These phenomena decrease the quality and effective bandwidth of the network.
To address them, “congestion control” is introduced in the TCP. The “congestion control” is control of adjusting a transmission rate, that is, to control an amount of packets to be transmitted based on the degree of network congestion or changes of the link capacity. In the congestion control, the amount of packets to be transmitted is controlled by a “congestion window”. In other words, the “congestion window” is a window which reflects the degree of network congestion or the changes of the link capacity. In the following description, the congestion window is sometimes abbreviated as CWND.
In the congestion control, the transmitter transmits a packet upon reception of an acknowledgement. In other words, when the acknowledgement is received, the transmission data amount for which acknowledgements are waited decrease by the amount indicated by the acknowledgement, more specifically, by a “reception-acknowledged data amount” indicated by the acknowledgement as a data amount newly received by the receiver, so that new packet can be transmitted. Accordingly, a trigger of the packet transmission is reception of an acknowledgement. Such packet transmission using an acknowledgement as a trigger is sometimes referred to as “ACK clocking”.
In the congestion control, the CWND size is increased or decreased in order to increase or decrease the transmission rate. Accordingly, remainder of the window in relation to the CWND size is shown by the summation of an amount of change at the CWND size and the “reception-acknowledged data amount” indicated by the acknowledgement. This remainder thus calculated shows an amount of transmittable. In other words, at the timing of increasing the CWND size, packets are transmitted at a transmission rate obtained by adding the CWND increase amount to the rate corresponding to the acknowledgement. At the time of slow start to be described later, such addition is made at every acknowledgement, and this is a typical case in which the TCP causes high traffic burstiness.
Here, the congestion control is specifically described by using a method called “reno” as an example, which is a typical method in the congestion control. FIG. 1 is a graph for illustrating conventional congestion control.
As illustrated in FIG. 1, an initial mode is set to be a slow start mode and the CWND size is set to be a minimum value. Then, every time an acknowledgement is received, the CWND size is increased by one packet. In other words, in the slow start mode, packets are transmitted by a double rate of the rate for the received acknowledgement, so that the transmission rate in the current RTT is the double of the transmission rate in the previous RTT.
If a packet loss E101-1 is detected by a duplicate acknowledgement (duplicate ACK) which is an event where the acknowledgement having the same acknowledgement number (ACK number) is received three times, the slow start mode is transitioned to a congestion avoidance mode. Then, the latest value of a slow start threshold (ssthresh) is set to be a half of the initial setup value, and the CWND size is also set according to the latest value of the slow start threshold. Every time an acknowledgement for a data amount equivalent to the current setup value of this CWND size is received, the CWND size is increased by one packet. In FIG. 1, a packet loss E101-2 is detected once again in response to the duplicate acknowledgement and the congestion avoidance mode is repeated.
As illustrated in FIG. 1, when a response timeout (RTO) E102 is detected, the latest value of the slow start threshold is set to be a half of the setup value at that time and the congestion window is set to be a minimum value. After that, the state transitions to the slow start mode. When the congestion window is increased to reach the slow start threshold, the slow start mode is transitioned to the congestion avoidance mode. The congestion control is performed as described above.